<?php
/**
 * Класс Controller_Ajax_Photo отвечает за обработку ajax-запросов, связанных с фотками
 * 
 * @author Sayp
 */
class Controller_Ajax_Photo extends Controller_Ajax {
	
	public function actionSwitch() {
		switch ($this->arrRequest[2]) {
			case 'main':
				$this->actionSetMainPhoto();
				break;
			case 'delete':
				$this->actionDelete();
				break;
			default:
				$this->setError(404);
				break;
		}
	}
	
	/**
	 * Меняем ID главной фотки у сущности
	 */
	protected function actionSetMainPhoto() {
		if (!User_Seance::isAdmin()) throw new Exception('', 403);

		if (empty($_POST['ID_photo'])) return $this->makeStandardError('Не хватает данных');
		
		$objPhoto = new Photo(intval($_POST['ID_photo']));
		if (!$objPhoto->id) return $this->makeStandardError('Нет такой фотки');
		
		$objEssence = Essence::getEssenceObjectById($objPhoto->getField('ID_essence_type'), $objPhoto->getField('ID_essence'));
		$objEssence->updateFields(array('ID_photo' => $objPhoto->id));
			
		$this->arrReturn = array('result' => 'OK');
	}
	
	/**
	 * Удааляем фотографию
	 */
	protected function actionDelete() {
		if (!User_Seance::isAdmin()) throw new Exception('', 403);
	
		if (empty($_POST['ID_photo'])) return $this->makeStandardError('Не хватает данных');
	
		$objPhoto = new Photo(intval($_POST['ID_photo']));
		if (!$objPhoto->id) return $this->makeStandardError('Нет такой фотки');
	
		$objEssence = Essence::getEssenceObjectById($objPhoto->getField('ID_essence_type'), $objPhoto->getField('ID_essence'));

		// Удаляем оригинал фотки
		unlink(ABSPATH . 'content/images/original/' . $objPhoto->id . '.jpg');
		// Удаляем фотоки из static
		$arrDirs = array_diff(scandir(ABSPATH . 'content/images/static'), array('.', '..'));
		foreach ($arrDirs as $dir) {
			if (is_file(ABSPATH . 'content/images/static/' . $dir . '/' . $objPhoto->id . '.jpg')) unlink(ABSPATH . 'content/images/static/' . $dir . '/' . $objPhoto->id . '.jpg');
		}
		$objPhoto->delete();
		
		// Если удаленная фотка была главной
		if ($objEssence->getField('ID_photo') == intval($_POST['ID_photo']) && $objEssence->id) {
			$objDB = Service_Database::instanse();
			$stmt = "
				SELECT `ID_photo`
				FROM `photo`
				WHERE `ID_essence` = '" . $objEssence->id . "' AND `ID_essence_type` = '" . $objEssence::$idEssenceType . "'
				ORDER BY `ID_photo` ASC
				LIMIT 1
			";
			$photoId = $objDB->selectOneValue($stmt);
			$objEssence->updateFields(array('ID_photo' => $photoId));
		}
			
		$this->arrReturn = array('result' => 'OK');
	}
	
}
